In general, data storage systems perform data storage and retrieval operations on behalf of external host devices. One conventional data storage system includes an array of storage devices and a monitoring device. The monitoring device is configured to operate in the object oriented paradigm, and has (i) a machine state server and (ii) an agent. The machine state server is adapted to output a set of common generic objects representing the array of storage devices in response to a request from the agent. The agent is adapted to objectize the set of common generic objects into a set of specific well-defined objects and, upon request from the external host devices, stream this set of specific well-defined objects to the external host devices. The agent is further adapted to track state changes in the data storage system by objectizing newer sets of common generic objects from the machine state server into newer sets of specific well-defined objects, and then compare each new set of specific well-defined objects with the previous set to determine whether any state changes have occurred in the data storage system (e.g., to detect the addition or removal of a LUN, the occurrence of a data storage operation, etc.).
FIG. 1 is a diagram 20 illustrating the operation of the above-described agent. First, the agent receives a set 22(A) of common generic objects 24 from the machine state server. As shown in FIG. 1, the set 22(A) of common generic objects 24 takes the logical form of a binary tree, and represents a current state of the data storage system. As illustrated by the arrow 26(A) in FIG. 1, the agent then processes the set 22(A) of common generic objects 24 into a subsystem 28(A) of well-defined objects 30. The agent then makes the well-defined objects 30 of this subsystem 28(A) available to the external host devices. For example, when an external host device starts up, the external host device communicates with the agent in order to obtain a stream of the well-defined objects 30 of the subsystem 28(A) and thus obtain a current view (i.e., the state) of the data storage system.
At a later time, the agent requests a new set 22(B) of common generic objects 24 from the machine state server. As with the original set 22(A) of common generic objects 24, this new set 22(B) of common generic objects 24 takes the logical form of a binary tree, and represents the current state of the data storage system at this later time. As illustrated by the arrow 26(B) in FIG. 1, the agent then processes the new set 22(B) of common generic objects 24 into a new subsystem 28(B) of well-defined objects 30. The agent then makes the well-defined objects 30 of this new subsystem 28(B) available to the external host devices. Furthermore, the agent performs a comparison between the original subsystem 28(A) of well-defined objects 30 and the new subsystem 28(B) of well-defined objects 30 (as illustrated by the box 32 in FIG. 1), and makes the result of this subsystem comparison available to the external host devices. Such processing enables the external host devices to detect state changes in the data storage system based on a comparison of the subsystems 28(A), 28(B). Typically, the agent repeats this process periodically (e.g., every minute) so that the state change information (as defined by (i) the retrieval of new sets 22 of common generic objects 24 and (ii) the comparison of subsystems 28) remains relatively up to date.